Many applications that are implemented in hardware take as input a list or vector of data words and produce a vector of data words of the same length as output. These applications are often implemented using streaming architectures. In these architectures, the input vector is divided into chunks of equal length and these chunks enter the architecture at regular intervals. Similarly, the output is produced in chunks exiting the architecture in regular intervals. Streaming means that the architectures can start processing the first chunk of the next input vector immediately after the last chunk of the current data vector entered. This present invention is concerned with the design of streaming architectures for permutations of a data vector. A permutation is a fixed reordering in a predetermined manner.
FIG. 1a shows a permutation in space. All 2n datawords are available in one time interval and can hence be permuted using only wires (the wires are not shown).